package com.zan.pattern.singleton.demo7;

import java.io.*;

/**
 * @Author Zan
 * @Create 2024/4/23 19:27
 * @Description :
 *          测试使用反射破坏单例模式
 *
 *          桌面路径： C:\Users\Zan\Desktop
 * @ClassName: Client
 */
public class Client {
    public static void main(String[] args) throws Exception {
//        writeObjectToFile();
        readObjectFromFile();
        readObjectFromFile();
    }

    // 从文件中读取数据（对象）
    public static void readObjectFromFile() throws Exception {
        // 1.创建输入流对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:\\Users\\Zan\\Desktop\\a.txt"));
        // 2.读取对象
        Singleton instance = (Singleton) ois.readObject();
        System.out.println(instance);
        // 3.释放资源
        ois.close();
    }

    // 向文件中写数据（对象）
    public static void writeObjectToFile() throws Exception {
        // 1.获取Singleton对象
        Singleton instance = Singleton.getInstance();
        // 2.创建输出流对象 - ObjectOutputStream写入的对象必须实现序列化
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Users\\Zan\\Desktop\\a.txt"));
        // 3.写对象
        oos.writeObject(instance);
        // 4.释放资源
        oos.close();
    }
}
